/**
 * AMap插件名称类型
 * 可选值: "Scale" | "ToolBar" | "HawkEye" | "ControlBar"
 */
export type PluginName = "Scale" | "ToolBar" | "HawkEye" | "ControlBar";

/**
 * 地图基础配置选项接口
 * @property zoom - 地图缩放级别
 * @property center - 地图中心点坐标
 */
export interface MapOptions {
  zoom: number;
  center: [number, number];
}

/**
 * 折线模块参数选项接口
 * @property path - 折线路径坐标数组，格式为[经度, 纬度][]
 * @property [key: string] - 其他可选属性
 */
export interface PolylineOption {
  path: [number, number][];
  [key: string]: any;
}

/**
 * AMap模块接口-  适用于调取drawPolylines绘制多条轨迹方法的返回值
 * @property name - 模块名称： 'Polyline'
 * @property instance - 折线实例数组
 * @property events - 事件处理对象
 */
export interface AmapModule {
  name: string;
  instance: PolylineInstance[];
  events: { remove?: () => void };
}

/**
 * 折线实例接口- 适用于调取createSinglePolyline绘制单条轨迹的返回值
 * @property polyline - AMap折线实例
 * @property passedPolyline - 已通过路径的折线实例
 * @property marker - 标记点实例
 * @property methods - 折线控制方法
 */
export interface PolylineInstance {
  polyline: any;
  passedPolyline: any;
  marker: any;
  methods: {
    start: (duration?: number) => void;
    pause: () => void;
    resume: () => void;
    stop: () => void;
  };
}

/**
 * 折线控制方法接口
 * @method start - 开始动画
 * @method pause - 暂停动画
 * @method resume - 恢复动画
 * @method stop - 停止动画
 */
export interface PolylineMethods {
  start: (duration?: number) => void;
  pause: () => void;
  resume: () => void;
  stop: () => void;
}
